/*
 * headerstop.h
 *	The precompiled header stop point (for platforms that support PCH).
 *	Project-wide includes and stuffs go here.
 *
 *  Created on: Apr 26, 2013
 *      Author: zapmunk
 */

#pragma once

//STL includes
#include <iostream>
#include <string>
#include <vector>
//#include <iterator>

#ifdef COMPILE_DEBUG
#include "dbgout.h"
#include "cppmemdbg/cppMemDbg.h"
#endif

//includes
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_opengl.h>
#include <SDL2/SDL_surface.h>

//Exceptions
class Exception {
public:
	virtual std::string getMessage() const = 0;
	virtual ~Exception() {}
};

//Windows message compatibility
void exitWithMessage(int exitCode, const char *const msg);

//OS stuff
#define OS_LINUX 0
#define OS_WINDOWS 1
#define OS_MAC 2
#define OS_OTHER 10

#if defined __linux__
	#define OS OS_LINUX
#elif defined _WIN32
	#define OS OS_WINDOWS
#elif defined __APPLE__
	#define OS OS_MAC
#else
	#define OS OS_OTHER
#endif

//Sensible type names
typedef unsigned char uint8, byte, uchar;
typedef unsigned short uint16;
typedef unsigned int uint32, uint;
typedef unsigned long long uint64;

typedef char int8;
typedef short int16;
typedef int int32;
typedef long long int64;

typedef float float32;
typedef double float64;
